#define CONFIG_FILE_PATH "./log.config"

#define DEBUG 0
#define INFO  1
#define WARN  2
#define ERROR 3
#define FATAL 4
 


#define LOGDATA 0
#define LOGTIME 1
#define LOGFILE 2
#define LOGLEVEL 3
#define LOGMESSAGE 4



#define MAX_COMMAND_LENGTH 50
#define SHORTSTR 10
#define MEDIUMSTR 50
#define LONGSTR 100	
typedef struct  _config_info
{
	char output_file[MEDIUMSTR]; //日志输出文件名
	int default_level;    //默认级别
    int format[5];        //输出格式
    long max_size;       //日志文件大小
	int save_log;        //日志文件超过大小后是否进行备份
}config_info;

//配置文件中解析每行选项的数据结构
typedef struct _parse_config
{
	char *option_name;//选项名
	int (*do_option)(int params_num,const char* params[]);//解析选项的函数
	struct _config_s *next;  //指向下一个数据结构
}parse_config;

typedef int(*do_option_t)(int params_num,const char* params[]);
int regist_option(char *option_name,do_option_t do_option_func);//注册解析函数

config_info* get_config();
int config_info_init();//初始化默认的配置选项
int read_config(const char *config_file_name);//读取配置文件
int init_regist();//注册配置选项的解析函数

int make_level_to_int(char *);
int make_format_to_int(char *);
//错误代码号
#define GET_CONFIG_INF_ERROR 100
#define LEVEL_LOW  101
#define GET_FILE_LENGTH_ERROR 102
#define	ARGS_ERROR 103	
#define MALLOC_ERROR 104
#define SAVE_FILE_ERROR 105
#define	OPEN_FILE_ERROR 106
/****************************
第一个参数是要记录的字符串
第二个参数为记录级别,
*/////////////////////////////
int write_log(char*,int);
